.pf-c-form {
  --pf-c-form--GridGap: var(--pf-global--gutter--md);

  // Group
  --pf-c-form__group--m-action--MarginTop: var(--pf-global--spacer--xl);
  --pf-c-form--m-horizontal__group-label--md--GridColumnWidth: #{pf-size-prem(150px)};
  --pf-c-form--m-horizontal__group-label--md--GridColumnGap: var(--pf-global--spacer--md);
  --pf-c-form--m-horizontal__group-control--md--GridColumnWidth: 1fr;

  // limit width
  --pf-c-form--m-limit-width--MaxWidth: #{pf-size-prem(500px)};

  // Group label
  --pf-c-form--m-horizontal__group-label--md--PaddingTop: var(--pf-global--spacer--sm);
  --pf-c-form__group-label--PaddingBottom: var(--pf-global--spacer--sm);

  // Label
  --pf-c-form__label--FontSize: var(--pf-global--FontSize--sm);
  --pf-c-form__label--LineHeight: var(--pf-global--LineHeight--sm);
  --pf-c-form__label--m-disabled--Color: var(--pf-global--disabled-color--100);

  // Label text
  --pf-c-form__label-text--FontWeight: var(--pf-global--FontWeight--bold);

  // Required labels
  --pf-c-form__label-required--MarginLeft: var(--pf-global--spacer--xs);
  --pf-c-form__label-required--FontSize: var(--pf-global--FontSize--sm);
  --pf-c-form__label-required--Color: var(--pf-global--danger-color--100);

  // Field level help
  --pf-c-form__group-label-help--PaddingTop: var(--pf-global--spacer--xs);
  --pf-c-form__group-label-help--PaddingRight: var(--pf-global--spacer--xs);
  --pf-c-form__group-label-help--PaddingBottom: var(--pf-global--spacer--xs);
  --pf-c-form__group-label-help--PaddingLeft: var(--pf-global--spacer--xs);
  --pf-c-form__group-label-help--MarginTop: calc(var(--pf-c-form__group-label-help--PaddingTop) * -1);
  --pf-c-form__group-label-help--MarginRight: calc(var(--pf-c-form__group-label-help--PaddingRight) * -1);
  --pf-c-form__group-label-help--MarginBottom: calc(var(--pf-c-form__group-label-help--PaddingBottom) * -1);
  --pf-c-form__group-label-help--MarginLeft: calc(var(--pf-c-form__group-label-help--PaddingLeft) * -1 + var(--pf-global--spacer--xs));
  --pf-c-form__group-label-help--FontSize: var(--pf-global--FontSize--sm);
  --pf-c-form__group-label-help--TranslateY: #{pf-size-prem(2px)};

  // Group control
  --pf-c-form__group-control--m-inline--child--MarginRight: var(--pf-global--spacer--lg);
  --pf-c-form__group-control__helper-text--MarginBottom: var(--pf-global--spacer--xs);

  // Actions
  --pf-c-form__actions--child--MarginTop: var(--pf-global--spacer--sm);
  --pf-c-form__actions--child--MarginRight: var(--pf-global--spacer--sm);
  --pf-c-form__actions--child--MarginBottom: var(--pf-global--spacer--sm);
  --pf-c-form__actions--child--MarginLeft: var(--pf-global--spacer--sm);
  --pf-c-form__actions--MarginTop: calc(var(--pf-c-form__actions--child--MarginTop) * -1);
  --pf-c-form__actions--MarginRight: calc(var(--pf-c-form__actions--child--MarginRight) * -1);
  --pf-c-form__actions--MarginBottom: calc(var(--pf-c-form__actions--child--MarginBottom) * -1);
  --pf-c-form__actions--MarginLeft: calc(var(--pf-c-form__actions--child--MarginLeft) * -1);

  // Helper text
  --pf-c-form__helper-text--MarginTop: var(--pf-global--spacer--xs);
  --pf-c-form__helper-text--FontSize: var(--pf-global--FontSize--sm);
  --pf-c-form__helper-text--Color: var(--pf-global--Color--100);

  // here
  // Helper text icon
  --pf-c-form__helper-text-icon--FontSize: var(--pf-global--FontSize--md);
  --pf-c-form__helper-text-icon--MarginRight: var(--pf-global--spacer--xs);

  // States
  --pf-c-form__helper-text--m-success--Color: var(--pf-global--success-color--200);
  --pf-c-form__helper-text--m-warning--Color: var(--pf-global--warning-color--200);
  --pf-c-form__helper-text--m-error--Color: var(--pf-global--danger-color--100);

  // Section
  --pf-c-form__section--MarginTop: var(--pf-global--spacer--xl);
  --pf-c-form__section--Gap: var(--pf-global--gutter--md);

  display: grid;
  grid-gap: var(--pf-c-form--GridGap);

  &.pf-m-horizontal {
    --pf-c-form__group-label--PaddingBottom: 0;

    &.pf-m-align-right {
      .pf-c-form__label {
        text-align: right;
      }
    }

    @media (min-width: $pf-global--breakpoint--md) {
      .pf-c-form__group {
        display: grid;
        grid-column-gap: var(--pf-c-form--m-horizontal__group-label--md--GridColumnGap);
        grid-template-columns: var(--pf-c-form--m-horizontal__group-label--md--GridColumnWidth) var(--pf-c-form--m-horizontal__group-control--md--GridColumnWidth);
      }

      .pf-c-form__group-label {
        padding-top: var(--pf-c-form--m-horizontal__group-label--md--PaddingTop);

        // stylelint-disable-next-line
        &.pf-m-no-padding-top {
          --pf-c-form--m-horizontal__group-label--md--PaddingTop: 0;
        }
      }

      .pf-c-form__group-control {
        grid-column: 2;
      }
    }
  }

  &.pf-m-limit-width {
    max-width: var(--pf-c-form--m-limit-width--MaxWidth);
  }
}

.pf-c-form__group {
  &.pf-m-action {
    margin-top: var(--pf-c-form__group--m-action--MarginTop);
    overflow: hidden; // keeps the negative bottom margin bottom on .pf-c-form__actions from triggering overflow
  }
}

.pf-c-form__section {
  display: grid;
  gap: var(--pf-c-form__section--Gap);

  & + .pf-c-form__group:not(.pf-m-action),
  &:not(:first-child) {
    margin-top: var(--pf-c-form__section--MarginTop);
  }
}

.pf-c-form__group-label {
  --pf-c-form__helper-text--MarginTop: 0;

  padding-bottom: var(--pf-c-form__group-label--PaddingBottom);
}

.pf-c-form__label {
  font-size: var(--pf-c-form__label--FontSize);
  line-height: var(--pf-c-form__label--LineHeight);

  &::selection {
    background-color: none;
  }

  &:not(.pf-m-disabled):hover {
    cursor: pointer;
  }

  &.pf-m-disabled {
    color: var(--pf-c-form__label--m-disabled--Color);
  }

  &.pf-m-disabled:hover {
    cursor: not-allowed;
  }
}

.pf-c-form__label-text {
  font-weight: var(--pf-c-form__label-text--FontWeight);
}

.pf-c-form__label-required {
  margin-left: var(--pf-c-form__label-required--MarginLeft);
  font-size: var(--pf-c-form__label-required--FontSize);
  color: var(--pf-c-form__label-required--Color);
}

.pf-c-form__group-label-help {
  padding-top: var(--pf-c-form__group-label-help--PaddingTop);
  padding-right: var(--pf-c-form__group-label-help--PaddingRight);
  padding-bottom: var(--pf-c-form__group-label-help--PaddingBottom);
  padding-left: var(--pf-c-form__group-label-help--PaddingLeft);
  margin-top: var(--pf-c-form__group-label-help--MarginTop);
  margin-right: var(--pf-c-form__group-label-help--MarginRight);
  margin-bottom: var(--pf-c-form__group-label-help--MarginBottom);
  margin-left: var(--pf-c-form__group-label-help--MarginLeft);
  font-size: var(--pf-c-form__group-label-help--FontSize);
  line-height: 1;
  border: 0;
  transform: translateY(var(--pf-c-form__group-label-help--TranslateY));
}


.pf-c-form__group-control {
  &.pf-m-inline {
    display: flex;
    flex-flow: row wrap;

    > * {
      margin-right: var(--pf-c-form__group-control--m-inline--child--MarginRight);
    }
  }

  .pf-c-form__helper-text:first-child {
    --pf-c-form__helper-text--MarginTop: 0;

    margin-bottom: var(--pf-c-form__group-control__helper-text--MarginBottom);
  }
}

.pf-c-form__helper-text {
  margin-top: var(--pf-c-form__helper-text--MarginTop);
  font-size: var(--pf-c-form__helper-text--FontSize);
  color: var(--pf-c-form__helper-text--Color);

  &.pf-m-error {
    --pf-c-form__helper-text--Color: var(--pf-c-form__helper-text--m-error--Color);
  }

  &.pf-m-success {
    --pf-c-form__helper-text--Color: var(--pf-c-form__helper-text--m-success--Color);
  }

  &.pf-m-warning {
    --pf-c-form__helper-text--Color: var(--pf-c-form__helper-text--m-warning--Color);
  }

  &.pf-m-inactive {
    display: none;
    visibility: hidden;
  }

  &.pf-m-hidden {
    visibility: hidden;
    opacity: 0;
  }
}

.pf-c-form__helper-text-icon {
  margin-right: var(--pf-c-form__helper-text-icon--MarginRight);
  font-size: var(--pf-c-form__helper-text-icon--FontSize);
}

// Fieldset
.pf-c-form__fieldset {
  border: 0;
}

.pf-c-form__actions {
  display: flex;
  flex-wrap: wrap;
  margin-top: var(--pf-c-form__actions--MarginTop);
  margin-right: var(--pf-c-form__actions--MarginRight);
  margin-bottom: var(--pf-c-form__actions--MarginBottom);
  margin-left: var(--pf-c-form__actions--MarginLeft);

  > * {
    margin-top: var(--pf-c-form__actions--child--MarginTop);
    margin-right: var(--pf-c-form__actions--child--MarginRight);
    margin-bottom: var(--pf-c-form__actions--child--MarginBottom);
    margin-left: var(--pf-c-form__actions--child--MarginLeft);
  }
}
